import { reqCategoryList, reqGetBannerList, reqFloorList } from '@/api';
//state：仓库存储数据的地方
const state = {
    //state中的默认数据，服务器返回对象，默认数据就是对象，返回数组，起始值就是数组
    //初始值根据接口返回值的类型
    categoryList: [],//先默认空数组
    //banner轮播图的数据
    bannerList: [],
    // floor的数据
    floorList: []
};
//mutations：修改state的唯一手段
const mutations = {
    CATEGORYLIST(state, categoryList) {
        state.categoryList = categoryList;
    },
    GETBANNERLIST(state, bannerList) {
        state.bannerList = bannerList;  //只要mutations才能修改state
    },
    GETFLOORLIST(state, floorList) {
        state.floorList = floorList
    }
};
//action：处理action。可以书写自己的业务逻辑，也可以处理异步
const actions = {
    //通过API里面的接口函数调用，向服务器发请求，获取服务器的数据
    // await即等待，用于等待一个Promise对象。它只能在异步函数 async function中使用，否则会报错
    // 它的返回值不是Promise对象而是Promise对象处理之后的结果
    async categoryList({ commit }) {
        let result = await reqCategoryList();
        // console.log(result) //打印数据库返回结果
        if (result.code == 200) {
            commit("CATEGORYLIST", result.data)
        }
    },
    //获取首页轮播图的数据
    async getBannerList({ commit }) {
        let result = await reqGetBannerList();
        // console.log(result)
        if (result.code == 200) { //如果code值为200，就提交到GETBANNERLIST，值为result.data
            commit("GETBANNERLIST", result.data)
        }
    },
    //获取floor的数据
    async getFloorList({ commit }) {
        let result = await reqFloorList();
        // console.log(result)
        if (result.code == 200) {
            //提交mutation
            commit("GETFLOORLIST", result.data)
        }
    }
};
//getters：理解为计算属性，用于简化仓库数据，让组件获取仓库的数据更加方便
const getters = {};
export default {
    state,
    mutations,
    actions,
    getters,
};